#ifndef _PENDING_DATA_QUEUE_H
#define _PENDING_DATA_QUEUE_H

#include <stdbool.h>
#include <stdint.h>
#include "packet_queue.h"
#include "uv.h"

typedef struct
{
    uv_work_t req;
    uv_buf_t buf;
} vz_work_req_t;

void picsQueueInit();
bool isPicsQueueEmpty();
void picsEnqueue(Packet *p);
Packet *picsDequeue();
uint32_t getPicsQueueLen();

void othersQueueInit();
bool isOthersQueueEmpty();
void othersEnqueue(Packet *p);
Packet *othersDequeue();
uint32_t getOthersQueueLen();

void sqlCmdQueueInit();
bool isSqlCmdQueueEmpty();
void sqlEnqueue(Packet *p);
Packet *sqlDequeue();

void sql2SocketQueueInit();
bool isSql2SocketEmpty();
void sql2SocketEnqueue(Packet *p);
Packet *sql2SocketDequeue();

// void vzWrokReqQueueInit();
// bool isVzWrokReqQueueEmpty();
// void vzWrokReqEnqueue(Packet *p);
// void fireEventVzWorkByFileId(uint16_t fileId);
// void dequeueVzWorkByFileId(uint16_t fileId);

void timerQueueInit();
uv_timer_t *timerDequeue();
void timerEnqueue(uv_timer_t *timer);

#endif